package com.turing.post.organization.util;

import java.math.BigInteger;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * 发卡商实体类
 * 
 * @author zxp
 * @date 2012-12-14
 */
@SuppressWarnings("serial")
@Entity
@Table(name = "ISSUECOMPANY")
public class IssueCompany implements java.io.Serializable {

	/**
	 * FTP对账地址
	 */
	public static final String ChkAccFtpAddr = "ftp://10.62.5.1/home/pcpsacc/acc|-user|pcpsacc|-password|pcpsacc|";

	public static final String IDNO = "000000000000000000";

	/**
	 * 发卡商分类 0 – 永久
	 */
	public static final String ISSUECOMPANY_CATEGORY_FOREVER = "0";

	/**
	 * 发卡商分类 2 – 平台租赁
	 */
	public static final String ISSUECOMPANY_CATEGORY_LEASE = "2";

	/**
	 * 激活状态 0 – 未激活
	 */
	public static final String ISSUECOMPANY_ACTIVATE_NOTACTIVATED = "0";

	/**
	 * 激活状态 1 – 已激活
	 */
	public static final String ISSUECOMPANY_ACTIVATE_ACTIVATED = "1";

	/**
	 * 密码错误时限 初始为24hours
	 */
	public static final Integer ISSUECOMPANY_PWDERRLIMIT = 24;

	/**
	 * 密码错误次数 初始为5次,一天错误5次
	 */
	public static final Integer ISSUECOMPANY_MAXPWDERRCNT = 5;

	/**
	 * 最大取消时限 初始为1440小时
	 */
	public static final Integer ISSUECOMPANY_MAXCANCELTIMELIMIT = 1440;

	/**
	 * 状态 0 – 正常交易
	 */
	public static final String ISSUECOMPANY_NORMAL_TRANSACTION = "0";

	/**
	 * 状态 1 – 正在日终
	 */
	public static final String ISSUECOMPANY_NORMAL_ENDDAY = "1";
	/**
	 * 发卡商No
	 */
	private String issueCompanyNo;
	/**
	 * 发卡商名称
	 */
	private String issueCompanyName;

	/**
	 * 行政区域
	 */
	private String regionNo;
	/**
	 * 分类
	 */
	private String category;

	/**
	 * 收单机构ID
	 */
	private String activate;
	/**
	 * 状态
	 */
	private String status;

	/**
	 * 总公司抽成比率
	 */
	private Integer commissionRatio;

	/**
	 * 跨地域商户开发单位抽成
	 */
	private Integer mCommissionRatio;
	/**
	 * 租赁到期日
	 */
	private Date leaseExpired;
	/**
	 * 租赁到期日
	 */
	private Date tranDate;
	/**
	 * 地址
	 */
	private String address;
	/**
	 * 联系电话
	 */
	private String telephone;
	/**
	 * 联系人
	 */
	private String relation;
	/**
	 * 密码错误时限
	 */
	private Integer pwdErrLimit;
	/**
	 * 密码错误次数
	 */
	private Integer maxPwdErrCnt;
	/**
	 * 最大取消时限
	 */
	private Integer maxCancelTimeLimit;
	/**
	 * 帐户子系统上日余额,初始为0,日终后更新
	 */
	private BigInteger lastBalance;
	/**
	 * 帐户子系统余额,初始为0,日终后更新
	 */
	private BigInteger balance;
	/**
	 * 个人购卡实名下限,超过此限制将必须录入个人购卡实名信息
	 */
	private BigInteger personalBuyerLimit;
	/**
	 * 单位购卡实名下限,超过此限制将必须录入单位购卡实名信息
	 */
	private BigInteger organizeBuyerLimit;
	/**
	 * 单卡实名下限,单卡购买/充值下限，超过此限制，必须录入实名持卡人信息
	 */
	private BigInteger eachCardOwnerLimit;
	/**
	 * 单卡余额上限
	 */
	private BigInteger eachCardBalanceLimit;
	/**
	 * 销售/充值大于该限制时必须输入柜员授权密码
	 */
	private BigInteger orderAmountLimit;

	/**
	 * 非直营店单卡销售/充值上限 Decimal（16） Not Null 默认20000分
	 */
	private Integer nonDirectSaleLimit;

	/**
	 * 合同到期提醒时间
	 */
	private Integer contractAlertLimit;

	/**
	 * 个人销售转账下限
	 */
	private Integer personTransferLimit;

	/**
	 * 单位销售转账下限
	 */
	private Integer organizeTransferLimit;

	/**
	 * 充值转账下限
	 */
	private BigInteger depositTransferLimit;
	/**
	 * 现金库上限默认为0，销售单收现金检查，超过该限额提示
	 */
	private BigInteger cashUpperLimit;
	/**
	 * 临时挂失时限单位天，默认5超过此时限如不正式挂失，卡状态日终时自动转为正常
	 */
	private Integer tempLossLimit;
	/**
	 * 挂失补发时限 Number（1） Not Null 单位天，默认7
	 */
	private Integer lossLimit;
	/**
	 * 赎回期限限制
	 */
	private Integer redempLimit;
	/**
	 * 单笔赎回现金上限
	 */
	private Integer redempEachCashLimit;
	/**
	 * 0 –不允许
	 */
	public static final String ISSUECOMPANY_NOALLOW_DEPOSIT = "0";

	/**
	 * 状态 1 – 允许
	 */
	public static final String ISSUECOMPANY_ALLOW_DEPOSIT = "1";
	/**
	 * 是否允许商户充值
	 */
	private String allowMrchDeposit;
	/**
	 * 商户单笔充值上限 0 不限制
	 */
	private Integer mrchEachDepositLimit;

	/**
	 * 商户单卡单日累计充值上限
	 */
	private Integer mrchDayDepositLimit;
	/**
	 * 默认充值归属销售机构
	 */
	private String depositSaleBranchNo;

	/**
	 * 发卡商简称
	 */
	private String shortlyName;

	/**
	 * 管理系统标题
	 */
	private String misTitle;

	/**
	 * 英文标题
	 */
	private String englishTitle;

	/**
	 * 是否允许使用自助服务网站
	 */
	private String allowSelfService;

	/**
	 * 日终状态
	 */
	private String dayOffStatus;

	/**
	 * 日终备注
	 */
	private String dayOffRemark;

	/**
	 * 对帐文件FTP地址
	 */
	private String chkAccFtpAddr;

	/**
	 * 报告机构名称
	 */
	private String RINM;
	/**
	 * 报告机构所在地区编码
	 */
	private String FIRC;
	/**
	 * 报告机构分支机构/网点代码
	 */
	private String FICD;

	private String dakMerchantNo;

	/**
	 * 备注
	 */
	private String remark;

	/**
	 * 卡延期时间单位: 月
	 */
	private Integer defaultExpired;

	public Integer getDefaultExpired() {
		return defaultExpired;
	}

	public void setDefaultExpired(Integer defaultExpired) {
		this.defaultExpired = defaultExpired;
	}

	public IssueCompany() {

	}

	@Id
	@Column(name = "ISSUECOMPANYNO")
	public String getIssueCompanyNo() {
		return issueCompanyNo;
	}

	public void setIssueCompanyNo(String issueCompanyNo) {
		this.issueCompanyNo = issueCompanyNo;
	}

	@Column(name = "ISSUECOMPANYNAME")
	public String getIssueCompanyName() {
		return issueCompanyName;
	}

	public void setIssueCompanyName(String issueCompanyName) {
		this.issueCompanyName = issueCompanyName;
	}

	@Column(name = "REGIONNO")
	public String getRegionNo() {
		return regionNo;
	}

	public void setRegionNo(String regionNo) {
		this.regionNo = regionNo;
	}

	@Column(name = "CATEGORY")
	public String getCategory() {
		return category;
	}

	public void setCategory(String category) {
		this.category = category;
	}

	@Column(name = "ACTIVATE")
	public String getActivate() {
		return activate;
	}

	public void setActivate(String activate) {
		this.activate = activate;
	}

	@Column(name = "STATUS", nullable = false)
	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	@Column(name = "commissionRatio", nullable = false)
	public Integer getCommissionRatio() {
		return commissionRatio;
	}

	public void setCommissionRatio(Integer commissionRatio) {
		this.commissionRatio = commissionRatio;
	}

	@Column(name = "mCommissionRatio", nullable = false)
	public Integer getMCommissionRatio() {
		return mCommissionRatio;
	}

	public void setMCommissionRatio(Integer commissionRatio) {
		mCommissionRatio = commissionRatio;
	}

	@Column(name = "LEASEEXPIRED")
	public Date getLeaseExpired() {
		return leaseExpired;
	}

	public void setLeaseExpired(Date leaseExpired) {
		this.leaseExpired = leaseExpired;
	}

	@Column(name = "TRANDATE")
	public Date getTranDate() {
		return tranDate;
	}

	public void setTranDate(Date tranDate) {
		this.tranDate = tranDate;
	}

	@Column(name = "ADDRESS")
	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Column(name = "TELEPHONE")
	public String getTelephone() {
		return telephone;
	}

	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}

	@Column(name = "RELATION")
	public String getRelation() {
		return relation;
	}

	public void setRelation(String relation) {
		this.relation = relation;
	}

	@Column(name = "PWDERRLIMIT")
	public Integer getPwdErrLimit() {
		return pwdErrLimit;
	}

	public void setPwdErrLimit(Integer pwdErrLimit) {
		this.pwdErrLimit = pwdErrLimit;
	}

	@Column(name = "MAXPWDERRCNT")
	public Integer getMaxPwdErrCnt() {
		return maxPwdErrCnt;
	}

	public void setMaxPwdErrCnt(Integer maxPwdErrCnt) {
		this.maxPwdErrCnt = maxPwdErrCnt;
	}

	@Column(name = "MAXCANCELTIMELIMIT")
	public Integer getMaxCancelTimeLimit() {
		return maxCancelTimeLimit;
	}

	public void setMaxCancelTimeLimit(Integer maxCancelTimeLimit) {
		this.maxCancelTimeLimit = maxCancelTimeLimit;
	}

	@Column(name = "LASTBALANCE")
	public BigInteger getLastBalance() {
		return lastBalance;
	}

	public void setLastBalance(BigInteger lastBalance) {
		this.lastBalance = lastBalance;
	}

	@Column(name = "BALANCE")
	public BigInteger getBalance() {
		return balance;
	}

	public void setBalance(BigInteger balance) {
		this.balance = balance;
	}

	@Column(name = "PERSONALBUYERLIMIT")
	public BigInteger getPersonalBuyerLimit() {
		return personalBuyerLimit;
	}

	public void setPersonalBuyerLimit(BigInteger personalBuyerLimit) {
		this.personalBuyerLimit = personalBuyerLimit;
	}

	@Column(name = "ORGANIZEBUYERLIMIT")
	public BigInteger getOrganizeBuyerLimit() {
		return organizeBuyerLimit;
	}

	public void setOrganizeBuyerLimit(BigInteger organizeBuyerLimit) {
		this.organizeBuyerLimit = organizeBuyerLimit;
	}

	@Column(name = "EACHCARDOWNERLIMIT")
	public BigInteger getEachCardOwnerLimit() {
		return eachCardOwnerLimit;
	}

	public void setEachCardOwnerLimit(BigInteger eachCardOwnerLimit) {
		this.eachCardOwnerLimit = eachCardOwnerLimit;
	}

	@Column(name = "EACHCARDBALANCELIMIT")
	public BigInteger getEachCardBalanceLimit() {
		return eachCardBalanceLimit;
	}

	public void setEachCardBalanceLimit(BigInteger eachCardBalanceLimit) {
		this.eachCardBalanceLimit = eachCardBalanceLimit;
	}

	@Column(name = "ORDERAMOUNTLIMIT")
	public BigInteger getOrderAmountLimit() {
		return orderAmountLimit;
	}

	public void setOrderAmountLimit(BigInteger orderAmountLimit) {
		this.orderAmountLimit = orderAmountLimit;
	}

	@Column(name = "DEPOSITTRANSFERLIMIT")
	public BigInteger getDepositTransferLimit() {
		return depositTransferLimit;
	}

	public void setDepositTransferLimit(BigInteger depositTransferLimit) {
		this.depositTransferLimit = depositTransferLimit;
	}

	@Column(name = "CASHUPPERLIMIT")
	public BigInteger getCashUpperLimit() {
		return cashUpperLimit;
	}

	public void setCashUpperLimit(BigInteger cashUpperLimit) {
		this.cashUpperLimit = cashUpperLimit;
	}

	@Column(name = "TEMPLOSSLIMIT")
	public Integer getTempLossLimit() {
		return tempLossLimit;
	}

	public void setTempLossLimit(Integer tempLossLimit) {
		this.tempLossLimit = tempLossLimit;
	}

	@Column(name = "LOSSLIMIT")
	public Integer getLossLimit() {
		return lossLimit;
	}

	public void setLossLimit(Integer lossLimit) {
		this.lossLimit = lossLimit;
	}

	@Column(name = "REDEMPLIMIT")
	public Integer getRedempLimit() {
		return redempLimit;
	}

	public void setRedempLimit(Integer redempLimit) {
		this.redempLimit = redempLimit;
	}

	@Column(name = "REDEMPEACHCASHLIMIT")
	public Integer getRedempEachCashLimit() {
		return redempEachCashLimit;
	}

	public void setRedempEachCashLimit(Integer redempEachCashLimit) {
		this.redempEachCashLimit = redempEachCashLimit;
	}

	@Column(name = "ALLOWMRCHDEPOSIT")
	public String getAllowMrchDeposit() {
		return allowMrchDeposit;
	}

	public void setAllowMrchDeposit(String allowMrchDeposit) {
		this.allowMrchDeposit = allowMrchDeposit;
	}

	@Column(name = "MRCHEACHDEPOSITLIMIT")
	public Integer getMrchEachDepositLimit() {
		return mrchEachDepositLimit;
	}

	public void setMrchEachDepositLimit(Integer mrchEachDepositLimit) {
		this.mrchEachDepositLimit = mrchEachDepositLimit;
	}

	@Column(name = "mrchDayDepositLimit")
	public Integer getMrchDayDepositLimit() {
		return mrchDayDepositLimit;
	}

	public void setMrchDayDepositLimit(Integer mrchDayDepositLimit) {
		this.mrchDayDepositLimit = mrchDayDepositLimit;
	}

	@Column(name = "DEPOSITSALEBRANCHNO")
	public String getDepositSaleBranchNo() {
		return depositSaleBranchNo;
	}

	public void setDepositSaleBranchNo(String depositSaleBranchNo) {
		this.depositSaleBranchNo = depositSaleBranchNo;
	}

	@Column(name = "SHORTLYNAME")
	public String getShortlyName() {
		return shortlyName;
	}

	public void setShortlyName(String shortlyName) {
		this.shortlyName = shortlyName;
	}

	@Column(name = "MISTITLE")
	public String getMisTitle() {
		return misTitle;
	}

	public void setMisTitle(String misTitle) {
		this.misTitle = misTitle;
	}

	@Column(name = "ENGLISHTITLE")
	public String getEnglishTitle() {
		return englishTitle;
	}

	public void setEnglishTitle(String englishTitle) {
		this.englishTitle = englishTitle;
	}

	@Column(name = "ALLOWSELFSERVICE")
	public String getAllowSelfService() {
		return allowSelfService;
	}

	public void setAllowSelfService(String allowSelfService) {
		this.allowSelfService = allowSelfService;
	}

	@Column(name = "DAYOFFSTATUS")
	public String getDayOffStatus() {
		return dayOffStatus;
	}

	public void setDayOffStatus(String dayOffStatus) {
		this.dayOffStatus = dayOffStatus;
	}

	@Column(name = "DAYOFFREMARK")
	public String getDayOffRemark() {
		return dayOffRemark;
	}

	public void setDayOffRemark(String dayOffRemark) {
		this.dayOffRemark = dayOffRemark;
	}

	@Column(name = "CHKACCFTPADDR")
	public String getChkAccFtpAddr() {
		return chkAccFtpAddr;
	}

	public void setChkAccFtpAddr(String chkAccFtpAddr) {
		this.chkAccFtpAddr = chkAccFtpAddr;
	}

	@Column(name = "nonDirectSaleLimit")
	public Integer getNonDirectSaleLimit() {
		return nonDirectSaleLimit;
	}

	public void setNonDirectSaleLimit(Integer nonDirectSaleLimit) {
		this.nonDirectSaleLimit = nonDirectSaleLimit;
	}

	@Column(name = "contractAlertLimit")
	public Integer getContractAlertLimit() {
		return contractAlertLimit;
	}

	public void setContractAlertLimit(Integer contractAlertLimit) {
		this.contractAlertLimit = contractAlertLimit;
	}

	@Column(name = "personTransferLimit")
	public Integer getPersonTransferLimit() {
		return personTransferLimit;
	}

	public void setPersonTransferLimit(Integer personTransferLimit) {
		this.personTransferLimit = personTransferLimit;
	}

	@Column(name = "organizeTransferLimit")
	public Integer getOrganizeTransferLimit() {
		return organizeTransferLimit;
	}

	public void setOrganizeTransferLimit(Integer organizeTransferLimit) {
		this.organizeTransferLimit = organizeTransferLimit;
	}

	@Column(name = "RINM")
	public String getRINM() {
		return RINM;
	}

	public void setRINM(String rinm) {
		RINM = rinm;
	}

	@Column(name = "FIRC")
	public String getFIRC() {
		return FIRC;
	}

	public void setFIRC(String firc) {
		FIRC = firc;
	}

	@Column(name = "FICD")
	public String getFICD() {
		return FICD;
	}

	public void setFICD(String ficd) {
		FICD = ficd;
	}

	@Column(name = "REMARK")
	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	@Column(name = "DAKMERCHANTNO")
	public String getDakMerchantNo() {
		return dakMerchantNo;
	}

	public void setDakMerchantNo(String dakMerchantNo) {
		this.dakMerchantNo = dakMerchantNo;
	}

}